package com.cy.dda.service.user;

import java.util.List;

import com.cy.dda.model.PageBean;
import com.cy.dda.model.Result;
import com.cy.dda.model.domain.user.User;
import com.cy.dda.model.enums.CommonStatus;
import com.cy.dda.model.query.user.DistributableUserListQuery;
import com.cy.dda.model.query.user.UserListAdminQuery;
import com.cy.dda.model.vo.user.DistributableUserListVO;
import com.cy.dda.model.vo.user.UserIndexCasesInfoVO;
import com.cy.dda.model.vo.user.UserIndexCollectionRecordInfoVO;
import com.cy.dda.model.vo.user.UserIndexInfoVO;
import com.cy.dda.model.vo.user.UserListAdminVO;

/**
 * 用户service
 *
 * @author: tanyilin
 * @create: 2018年10月31日 下午2:47:26
 */
public interface UserService {

	/**
	 * 用户登录
	 * 
	 * @param mobile
	 * @param password
	 * @return
	 */
	Result login(String mobile, String password);
	
	/**
	 * 新增用户（催收员）
	 * 
	 * @param user
	 */
	void addUser(User user);
	
	/**
	 * 用户重置密码
	 * 
	 * @param mobile
	 * @param newPassword
	 */
	void resetPassword(String mobile, String newPassword);
	
	/**
	 * 后台-用户列表，分页
	 * 
	 * @param query
	 * @return
	 */
	PageBean<UserListAdminVO> selectUserListAdmin(UserListAdminQuery query);
	
	/**
	 * 修改用户状态
	 * 
	 * @param userId
	 * @param status
	 */
	void updateStatus(Long userId, CommonStatus status);
	
	/**
	 * 前台用户修改密码
	 * 
	 * @param userId
	 * @param oldPassword
	 * @param newPassword
	 */
	void updatePassword(Long userId, String oldPassword, String newPassword);
	
	/**
	 * 查询前台用户首页信息字段
	 * 
	 * @param userId
	 * @return
	 */
	UserIndexInfoVO selectUserIndexInfoVO(Long userId);
	
	/**
	 * 查询前台用户首页新派委案信息
	 * 
	 * @param userId
	 * @return
	 */
	List<UserIndexCasesInfoVO> selectUserIndexCasesInfoVO(Long userId);
	
	/**
	 * 查询前台用户首页最近催收记录
	 * 
	 * @param userId
	 * @return
	 */
	List<UserIndexCollectionRecordInfoVO> selectUserIndexCollectionRecordInfoVO(Long userId);
	
	/**
	 * 查询可分配的用户列表
	 * 
	 * @param query
	 * @return
	 */
	PageBean<DistributableUserListVO> selectDistributableUserList(DistributableUserListQuery query);
}
